RISC-V /Debug /Abstract Control and Status (abstractcs)

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

Interpret as Abstract Control and Status (abstractcs)

31 2827 2423 2019 1615 1211 87 43 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0datacount 0 (none)cmderr 0 (full checks)relaxedpriv 0 (ready)busy 0progbufsize

busy=ready, relaxedpriv=full checks, cmderr=none

Description

Writing this register while an abstract command is executing causes {abstractcs-cmderr} to become 1 (busy) once the command completes ({abstractcs-busy} becomes 0).

đź“Ś NOTE

{abstractcs-datacount} must be at least 1 to support RV32 harts, 2 to support RV64 harts, or 4 to support RV128 harts.

Fields

datacount

Number of data registers that are implemented as part of the abstract command interface. Valid sizes are 1 – 12.

cmderr

Gets set if an abstract command fails. The bits in this field remain set until they are cleared by writing 1 to them. No abstract command is started until the value is reset to 0.

This field only contains a valid value if {abstractcs-busy} is 0.

0 (none): No error.

1 (busy): An abstract command was executing while {dm-command}, {dm-abstractcs}, or {dm-abstractauto} was written, or when one of the data or progbuf registers was read or written. This status is only written if {abstractcs-cmderr} contains 0.

2 (not supported): The command in {dm-command} is not supported. It may be supported with different options set, but it will not be supported at a later time when the hart or system state are different.

3 (exception): An exception occurred while executing the command (e.g. while executing the Program Buffer).

4 (halt/resume): The abstract command couldn’t execute because the hart wasn’t in the required state (running/halted), or unavailable.

5 (bus): The abstract command failed due to a bus error (e.g. alignment, access size, or timeout).

6 (reserved): Reserved for future use.

7 (other): The command failed for another reason.

relaxedpriv

This optional bit controls whether program buffer and abstract memory accesses are performed with the exact and full set of permission checks that apply based on the current architectural state of the hart performing the access, or with a relaxed set of permission checks (e.g. PMP restrictions are ignored). The details of the latter are implementation-specific.

0 (full checks): Full permission checks apply.

1 (relaxed checks): Relaxed permission checks apply.

busy

0 (ready): There is no abstract command currently being executed.

1 (busy): An abstract command is currently being executed.

progbufsize

Size of the Program Buffer, in 32-bit words. Valid sizes are 0 - 16.

Links

() ()